package com.vogue.supplymall.common.constant;

import java.math.BigDecimal;
import java.util.Arrays;
import java.util.List;

/**
 * 共用常量类
 *
 * @author 崔岳
 */
public class ConstantBean {
    /**
     * 系统名
     */
    public static final String SYSTEM_NAME = "sharego";
    /**
     * request中如果含有异常对象那么controller层负责抛出对应的异常返回json数据
     */
    public static final String REQUEST_EXCEPTION_KEY = "throwException";
    /**
     * 缓存中行政区域的KEY（只包含省）
     */
    public static final String ADMINISTRATIVE_AREA_PROVINCE_KEY = "ADMINISTRATIVE_AREA_PROVINCE_KEY";
    /**
     * 缓存中行政区域的KEY（只包含省）
     */
    public static final String ADMINISTRATIVE_AREA_CITY_KEY = "ADMINISTRATIVE_AREA_CITY_KEY";
    /**
     * 默认的城市代码：北京：110000
     */
    public static final String AREA_CITY = "110000";
    /**
     * 检索区域的级别 省
     */
    public static final Integer AREA_LEVEL_2 = 1;
    /**
     * 检索区域的级别 市
     */
    public static final Integer AREA_LEVEL_3 = 2;

    /**
     * 共享缓存中存放所有用户的登录信息的集合的Key值
     */
    public static final String LOGININFO_COLL_CACHE_KEY = "LOGININFO_COLL";
    /**
     * 城市的缓存
     */
    private static final String CITY = "CITY";
    /**
     * 同城店铺缓存的KEY
     */
    public static final String CITY_SHOP = "CITY_SHOP";
    /**
     * 资源文件名全局名称前缀
     */
    public static final String GLOBAL_SYSTEM = "global.system.";
    /**
     * 购物车最大数
     */
    public static final Long ORDER_CART_MAX_COUNT = 50L;
    /**
     * 验证码位数4位
     */
    public static final Integer VERIFICATION_CODE_DIGIT = 4;
    /**
     * 一分钟的毫秒数
     */
    public static final Long ONE_MINUTE_TIME = 60000L;
    /**
     * 缓存有效时间：10分钟
     */
    public static final Long CACHE_EFFECTIVE_TIME = 600000L;
    /**
     * 支付失效时间： 15分钟--改成-->120分钟
     */
    public static final Long PAY_FAILURE_TIME = 120L * 60L * 1000L;
    /**
     * 待接单失效时间：6小时
     */
    public static Long SELLER_AGREE_FAILURE_TIME = 6L * 60L * 60L * 1000L;
    /**
     * 自动收货时间：30天
     */
    public static final Long CONFIRM_RECEIVE_TIME = 24L * 30L * 60L * 60L * 1000L;
    /**
     * 订单最大金额
     */
    public static final BigDecimal MAX_ORDER_PRICE = new BigDecimal(5000000);
    /**
     * 订单最大金额
     */
    public static final String MAX_ORDER_PRICE_CHAR = "500";
    /**
     * plist下载地址的前缀
     */
    public static final String PLIST_PREFIX = "itms-services://?action=download-manifest&url=";
    /**
     * 二维码下载地址
     */
    public static final String QR_DOWNLOAD_URL = "https://www.ycgpt.com/download";

    public static final Integer MAX_PRODUCT_COUNT = 9999;

    /**
     * 平台信息Map在公共内存中的键值
     */
    public static final String PLATFORM_PROVIDER_NAME = "platform";
    /**
     * 平台信息Map--吾享支付接口信息
     */
    public static final String WUXIANG_CACHED_PAY_VALUES = "WUXIANG_CACHED_PAY_VALUES";
    /**
     * 平台信息Map--吾享支付接口信息_TS
     */
    public static final String WUXIANG_CACHED_TS_PAY_VALUES = "WUXIANG_CACHED_TS_PAY_VALUES";

    /**
     * 默认创建个人性质的机构matchid
     */
    public static final String PERSON_SHOP_MATCHID = "woshigeren";

    /**
     * 默认创建个人性质的仓库matchid
     */
    public static final String PERSON_STORE_MATCHID = "woshicangku";

    /**
     * 可以参与合并组合支付方式的集合
     */
    public static final List<Integer> COMBINATION_PAYMENT_ALLOW = Arrays.asList(0, 4);
    
    /** 吾享接口返回结果正确errorcode编码 */
    public static final Integer WUXIANG_SUCCESS_ERRORCODE = 200;
    
    /** 吾享接口返回结果正确returncode编码 */
    public static final Integer WUXIANG_SUCCESS_RETURNCODE = 1;
    
    /** 吾享接口返回结果失败returncode编码 */
    public static final Integer WUXIANG_FAIL_RETURNCODE = -1;
    
    /** 商城线上支付模式集合 */
    public static final List<Integer> PAYMODE_ONLINE = Arrays.asList(1, 2, 3);
    
    /** 商城线下支付模式集合 */
    public static final List<Integer> PAYMODE_OFFLINE = Arrays.asList(0);
    
    /** 商城自由支付模式集合（不受店铺支付限制的管辖） */
    public static final List<Integer> PAYMODE_FREE = Arrays.asList(4);
    
    /** 食尚购接口返回结果正确code编码 */
    public static final Integer SHAREGO_SUCCESS_CODE = 200;

    /** 默认好评：30天 */
    public static final Long COMMENT_DEFAULT_TIME = 30L * 24L * 60L * 60L;

    /** 默认好评：30天 */
    public static final String COMMENT_DEFAULT_GOODANSWER = "默认好评";

    /**
     * 用户登录身份类型
     *
     * @author 崔岳
     */
    public enum EnumLoginType {
        /**
         * 个人
         */
        PERSON(0),
        /**
         * 员工
         */
        WORKER(1);

        private int tCode;

        private EnumLoginType(int tCode) {
            this.tCode = tCode;
        }

        public String toString() {
            return String.valueOf(this.tCode);
        }

        public int getCode() {
            return tCode;
        }
    }

    /**
     * 引进商户平台分类
     *
     * @author 崔岳
     */
    public enum EnumPlatType {
        /**
         * 默认平台 食尚购
         */
        t1(1001),
        t2(1002),
        t3(1003),
        t4(1004),
        t5(1005),
        t6(1006),
        t7(1007),
        t8(1008),
        t9(1009),
        t10(1010);

        private int tCode;

        private EnumPlatType(int tCode) {
            this.tCode = tCode;
        }

        public String toString() {
            return String.valueOf(this.tCode);
        }

        public int getCode() {
            return tCode;
        }

    }

    /**
     * 不同平台分区片对应值
     *
     * @author 崔岳
     */
    public enum EnumPlatPartition {
        /**
         * 默认平台 食尚购
         */
        t1(10),
        t2(20),
        t3(30),
        t4(40),
        t5(50),
        t6(60),
        t7(70),
        t8(80),
        t9(90),
        t10(100);

        private int tCode;

        private EnumPlatPartition(int tCode) {
            this.tCode = tCode;
        }

        public String toString() {
            return String.valueOf(this.tCode);
        }

        public int getCode() {
            return tCode;
        }
    }

    /**
     * 订单-支付方式
     *
     * @author 崔岳
     */
    public enum EnumPaymentMode {
        /**
         * 线下
         */
        UnderLine(0),
        /**
         * 吾享(商龙云钱包)
         */
        WuXiang(1),
        /**
         * 微信
         */
        WeChat(2),
        /**
         * 支付宝
         */
        Alipay(3),
        /**
         * 预付货款
         */
        AdvancePayment(4);

        private int tCode;

        private EnumPaymentMode(int tCode) {
            this.tCode = tCode;
        }

        public String toString() {
            return String.valueOf(this.tCode);
        }

        public int getCode() {
            return tCode;
        }
    }
    
    /**
     * 吾享支付接口支付类型常量
     * @author cy
     *
     */
    public enum EnumWuxiangPaytypeid {
        /**
         * 吾享(商龙云钱包)
         */
        WuXiang(20),
        /**
         * 微信
         */
        WeChat(6),
        /**
         * 支付宝
         */
        Alipay(8);

        private int tCode;

        private EnumWuxiangPaytypeid(int tCode) {
            this.tCode = tCode;
        }

        public String toString() {
            return String.valueOf(this.tCode);
        }

        public int getCode() {
            return tCode;
        }
    }
    /**
     * 收获地址保存类型
     * @author cy
     *
     */
    public enum EnumAddressType {
        /**
         * 无
         */
        NONE(0),
        /**
         * 个人
         */
        PERSON(1),
        /**
         * 家
         */
        HOME(2),
        /**
         * 公司
         */
        COMPANY(3),
        /**
         * 店铺
         */
        SHOP(4);

        private int tCode;

        private EnumAddressType(int tCode) {
            this.tCode = tCode;
        }

        public String toString() {
            return String.valueOf(this.tCode);
        }

        public int getCode() {
            return tCode;
        }
    }
    /**
     * 店铺支付限制方式
     * @author cy
     *
     */
    public enum EnumShopPaymode {
        /**
         * 不限
         */
        NONE(0),
        /**
         * 线上
         */
        ONLINE(1),
        /**
         * 线下
         */
        OFFLINE(2);

        private int tCode;

        private EnumShopPaymode(int tCode) {
            this.tCode = tCode;
        }

        public String toString() {
            return String.valueOf(this.tCode);
        }

        public int getCode() {
            return tCode;
        }
    }
}
